using System;
using DataLayer;
using ListaDatos = CodeSoft.Datos.ListaDatos;


namespace CodeSoft.Logica
{
	/// <summary>
	/// Summary description for Miembro.
	/// </summary>
	public class Miembro:OrigenDatos
	{
		private string nombre;
		private string telefono;
		private string email;
		private string username;
		private string password;
		private Organizacion organizacion;
		private DateTime fechaEnvioUltimoMail;
		
		public Miembro():base(ListaDatos.Obtener("Miembros")) {}
		public Miembro(Registro reg):base(reg) {}
		public Miembro(int id):base(ListaDatos.Obtener("Miembros"),id) {}

		
		public Organizacion Organizacion
		{
			get
			{
				if (organizacion == null && Registro!=null)
					organizacion = (! Registro.DataRow.IsNull("idOrganizacion"))? new Organizacion((int)Registro.DataRow["idOrganizacion"]) : null;

				return organizacion;
			}
			set { organizacion = value; }
		}
		
		public string Nombre
		{
			get { return nombre; }
			set { nombre = value; }
		}

		public string Telefono
		{
			get { return telefono; }
			set { telefono = value; }
		}

		public string Email
		{
			get { return email; }
			set { email = value; }
		}

		public string Username
		{
			get { return username; }
			set { username = value; }
		}

		public string Password
		{
			get { return password; }
			set { password = value; }
		}

		public DateTime FechaEnvioUltimoMail
		{
			get { return fechaEnvioUltimoMail; }
			set { fechaEnvioUltimoMail = value; }
		}


		public override bool InicializarRegistro()
		{
			if (Registro != null)
			{
				Nombre = (! Registro.DataRow.IsNull("Nombre"))?(string)Registro.DataRow["Nombre"]:"";
				Telefono = (! Registro.DataRow.IsNull("Telefono")) ? (string) Registro.DataRow["Telefono"] : "";
				Email = (! Registro.DataRow.IsNull("Email")) ? (string) Registro.DataRow["Email"] : "";
				Username = (! Registro.DataRow.IsNull("Username")) ? (string) Registro.DataRow["Username"] : "";
				Password = (! Registro.DataRow.IsNull("Password")) ? (string) Registro.DataRow["Password"] : "";
				FechaEnvioUltimoMail = (! Registro.DataRow.IsNull("FechaEnvioUltimoMail"))?(DateTime)Registro.DataRow["FechaEnvioUltimoMail"]:DateTime.MinValue;
				
				return true;
			}
			return false;
		}

		public override bool AsignarRegistro()
		{
			if (Registro != null)
			{
				Registro.DataRow["idOrganizacion"] = (Organizacion!=null && Organizacion.ID>0)? (object)Organizacion.ID:DBNull.Value;
				Registro.DataRow["Nombre"] = Nombre;
				Registro.DataRow["Telefono"] = Telefono;
				Registro.DataRow["Email"] = Email;
				Registro.DataRow["Username"] = Username;
				Registro.DataRow["Password"] = Password;
				Registro.DataRow["FechaEnvioUltimoMail"] = (FechaEnvioUltimoMail == DateTime.MinValue)?(object)DBNull.Value:FechaEnvioUltimoMail;
				
				return true;
			}
			return false;
		}

		public override string ToString()
		{
			return Nombre.ToString();
		}

		public new void Update()
		{
			if (! EsNuevo)
			{
				Refresh();

				if(Organizacion != null)
					Organizacion.Refresh();
			}
		}
	}
}

